package com.lry.basic.string;

public class Test {
    public static void main(String[] args) {

//        String str1 = new StringBuilder("hel").append("lo").toString();
//        String str2 = new StringBuilder("ja").append("va").toString();

//        String str1 = new StringBuilder("hello").toString();
//        String str2 = new StringBuilder("java").toString();
//        (字符串常量池中不存在"ab"时)在字符换常量池中创建"ab"对象,在堆中生成了一个对象str5,
//            str5指向堆上new的对象，而str5内部的char value[]则指向常量池中的char value[]
//        String str1 = new String("hello");
//        String str2 = new String("java");

        String str1 = new String("hel")+new String("lo");
        String str2 = new String("ja")+new String("va");

        String str11 = str1.intern();
        String str22 = str2.intern();

        System.out.println(str11 == str1); // true

        System.out.println(str22 == str2); // false


//        String a = "ab";
//        String b = "b";
//        String c = "a"+b;
//        System.out.println(a == c);

//        String a = "ab";
//        final String b = "b";
//        String c = "a"+b;
//        System.out.println(a == c);

//        String a = "ab";
//        final String b = new String("b");
//        String c = "a"+b;
//        System.out.println(a == c);



//        String str1 = new StringBuilder("hel").append("lo").toString();
//        String str2 = new StringBuilder("ja").append("va").toString();
//
//        System.out.println(inPool(str1));
//        System.out.println(inPool(str2));
    }

    public static boolean inPool(String s) {
        String s2 = s.intern();
        if (s2 == s)
            return true;
        return false;
    }
}
